package co.edu.eam.laapuesta.ejb;

import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import co.edu.eam.laapuesta.persistencia.dao.ClienteDAO;
import co.edu.eam.laapuesta.persistencia.dao.LoteriaDAO;
import co.edu.eam.laapuesta.persistencia.entidades.Billete_Loteria;
import co.edu.eam.laapuesta.persistencia.entidades.Ganador_Seco;
import co.edu.eam.laapuesta.persistencia.entidades.Ganador_Sorteo;
import co.edu.eam.laapuesta.persistencia.entidades.Loteria;
import co.edu.eam.laapuesta.persistencia.entidades.Seco;
import co.edu.eam.laapuesta.persistencia.entidades.Sorteo;
import co.edu.eam.laapuesta.persistencia.idao.ClienteIDAO;
import co.edu.eam.laapuesta.persistencia.idao.LoteriaIDAO;

@Stateless
@LocalBean
public class LoteriaEJB {

	private LoteriaIDAO loteriaDao;
	private ClienteIDAO clienteDAO;

	@PersistenceContext(name = "LaApuestaJPA")
	private EntityManager entityManager;

	public LoteriaEJB() {
		// TODO Auto-generated constructor stub
	}
	@PostConstruct
	public void postConstructor(){
		clienteDAO=new ClienteDAO(entityManager);
		loteriaDao=new LoteriaDAO(entityManager);
	}

	public Loteria buscarLoteria(long id) throws Exception {

		return loteriaDao.buscarLoteria(id);
	}

	public List<Loteria> listarLoteria() throws Exception {

		if (loteriaDao.listarLoteria() == null) {
			throw new Exception("No hay Loterias");
		}
		return loteriaDao.listarLoteria();
	}

	public void VenderBilleteLoteria(Loteria loteria,int numeroLoteria,int serieLoteria,int cedulaPersona)throws Exception{
		Billete_Loteria billete= new Billete_Loteria();
		billete.setCliente(clienteDAO.buscarCliente(cedulaPersona));
		billete.setLoteria(loteria);
		billete.setNumero(numeroLoteria);
		billete.setSerie(serieLoteria);
		loteriaDao.crearBilleteLoteria(billete);
	}
	
	public Billete_Loteria buscarBilleteLoteria(long id) throws Exception {

		return loteriaDao.buscarBilleteLoteria(id);
	}

	public List<Billete_Loteria> listarBilleteLoteria() throws Exception {

		if (loteriaDao.listarBilleteLoteria() == null) {
			throw new Exception("No hay Loterias");
		}
		return loteriaDao.listarBilleteLoteria();
	}

	public void crearSeco(long id_seco, String descripcion, double premio,
			Sorteo sorteo, Ganador_Seco ganador_seco) throws Exception {

		Seco sec = new Seco();

		sec.setId_seco(id_seco);
		sec.setDescripcion(descripcion);
		sec.setPremio(premio);
		sec.setSorteo(sorteo);
		if (ganador_seco != null) {
			sec.setganador_seco(ganador_seco);
		}
		loteriaDao.crearSeco(sec);
	}

	public Seco buscarSeco(long id) throws Exception {

		return loteriaDao.buscarSeco(id);
	}

	public List<Seco> listarSeco() throws Exception {

		if (loteriaDao.listarSeco() == null) {
			throw new Exception("No hay secos");
		}
		return loteriaDao.listarSeco();
	}

	public Ganador_Seco buscarGanadorSeco(long id) throws Exception {

		return loteriaDao.buscarGanadorSeco(id);
	}

	public List<Ganador_Seco> listarGanadorSeco() throws Exception {

		if (loteriaDao.listarGanadorSeco() != null) {
			throw new Exception("no hay ganadores");
		}
		return loteriaDao.listarGanadorSeco();
	}

	public void crearSorteo(long id, int premio, Date fecha, List<Seco> secos,
			Loteria loteria, Ganador_Sorteo ganador_sorteo) throws Exception {

		Sorteo sorteo = new Sorteo();

		sorteo.setId(id);
		sorteo.setLoteria(loteria);
		sorteo.setPremio(premio);
		sorteo.setFecha(fecha);
		sorteo.setSecos(secos);
		if (ganador_sorteo == null) {
			sorteo.setganador_sorteo(ganador_sorteo);
		}

		loteriaDao.crearSorteo(sorteo);
	}

	public Sorteo buscarSorteo(long id) throws Exception {

		return loteriaDao.buscarSorteo(id);
	}

	public List<Sorteo> listarSorteo() throws Exception {

		if (loteriaDao.listarGanadorSorteo() != null) {
			throw new Exception("no hay sorteos");
		}
		return loteriaDao.listarSorteo();
	}
	
	public Ganador_Sorteo buscarGanadorSorteo(long id) throws Exception{
		
		return loteriaDao.buscarGanadorSorteo(id);
	}
	
	public List<Ganador_Sorteo> listarGanadorSorteo() throws Exception{
		
		if(loteriaDao.listarGanadorSorteo() != null){
			throw new Exception("no hay ganadores");
		}
		return loteriaDao.listarGanadorSorteo();
	}
}
